package uade.ejb;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

//import org.apache.log4j.Logger;

import services.ServicesAdministrator;
import sessionbeans.Articulos;
import sessionbeans.OFAD;
import sessionbeans.Palc;
import sessionbeans.SOLDIS;
import xml.XMLParser;
import dto.ArticuloDTO;
import dto.CentroDistribucionDTO;
import dto.OfertaDTO;
import dto.PedidoDTO;
import dto.SolicitudDistribucionDTO;
import dto.xml.XMLPalcDTO;
import entitybeans.Articulo;
import entitybeans.CentroDistribucion;
import entitybeans.SolicitudDistribucion;
import entitybeans.Tienda;

@Stateless
public class AdministradorLaCoruniaBean implements AdministradorLaCorunia {
	
	@EJB
	private Articulos articulosSessionBean;
	
	@EJB
	private OFAD ofadSessionBean;
	
	@EJB
	private Palc palcSessionBean;
	
	@EJB
	private SOLDIS soldisSessionBean; 
	
	
	/**
	 * Web Service Facade
	 */
	@EJB
	private ServicesAdministrator servicesAdministrator;
	
	
	
	@PersistenceContext
	private EntityManager em;
	
	public List<ArticuloDTO> getArticulos() {
		System.out.println("OBTENIENDO ARTICULOS");
		List<Articulo> articulos = articulosSessionBean.getArticulos();
		
		List<ArticuloDTO> articulosResultado = new ArrayList<ArticuloDTO>();
		for(Articulo a : articulos){
			articulosResultado.add(a.getDTO());
		}
		return articulosResultado;
	}

	@Override
	public boolean nuevoArticulo(ArticuloDTO articulo) {
		// TODO Auto-generated method stub
		return articulosSessionBean.nuevoArticulo(articulo);
	}

	@Override
	public ArticuloDTO getArticulo(Integer articulo_ref) {
		return articulosSessionBean.getArticulo(articulo_ref);
	}

	@Override
	public List<ArticuloDTO> getListadoTentativo() {
		return ofadSessionBean.getListadoTentativo();
	}

	@Override
	public void generarOFAD(List<String> refs_seleccionados) {
		ofadSessionBean.crearOFAD(refs_seleccionados);
		
	}

	@Override
	public List<OfertaDTO> getListdoOFAD() {
		List<OfertaDTO> ofertas= ofadSessionBean.getListadoOFAD();
		return ofertas;
	}

	@Override
	public void testPersistence() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public PedidoDTO nuevoPalc(XMLPalcDTO palc) {
		return palcSessionBean.nuevoPalc(palc);
	}
	@Override
	public String getOFADxml(String ofadref) {
		String xml = ofadSessionBean.getOFADxmlString(ofadref);
		servicesAdministrator.enviarOfadJMS(xml, ofadSessionBean.getTiendas());
		return ofadSessionBean.getOFADxml(ofadref);
	}

	@Override
	public void generarValoresSemilla() {
		ofadSessionBean.generarValoresSemilla();
	}

	@Override
	public List<CentroDistribucionDTO> getCentros() {
		return soldisSessionBean.getCentros();
	}

	@Override
	public void generarSOLDIS(String ref) {
		soldisSessionBean.generarSOLDIS(ref);
	}

	@Override
	public void generarSolicitudesDistribucionWS() {
		Hashtable <String, CentroDistribucion> solicitudesXMLyCentros = soldisSessionBean.generarSolicitudesDistribucionWS();
		servicesAdministrator.enviarSolDistWS(solicitudesXMLyCentros);
	}
	
}
